home *** CD-ROM | disk | FTP | other *** search
- #
- # $Id: aix.inc,v 1.2 2005/03/17 18:54:28 npouvesle Exp $
- #
- # (C) Tenable Network Security
- #
- # aix_check_patch() returns :
- # -1 if a patch is missing
- # 0 if a patch is not installed but not required (ie: other architecture)
- # 1 if the patch is installed
- #
- # example : aix_check_patch("5.1", "IY55678", "devices.scsi.tape.rte.5.1.0.50 devices.scsi.tape.diag.5.1.0.50");
- function aix_check_patch(release, patch, package)
- {
- local_var showrev, v, flag, packages, p, pattern;
-
- packages = get_kb_item("Host/AIX/lslpp");
- showrev = get_kb_item("Host/AIX/version");
-
- if ( ! packages || ! showrev || !release || !patch || !package) return 0;
- if (release >!< showrev)
- return 0;
-
- package = split(package, sep:" ", keep:FALSE);
- flag=0;
- foreach p (package)
- {
- p = eregmatch(pattern: "^(.*)\.([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)", string: p, icase: 0);
- pattern = p[1] + ":([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)";
- v = eregmatch(pattern: pattern , string: packages, icase: 0);
- if (!isnull(v))
- {
- flag = 1;
- if (v[1] < p[2])
- return -1;
- }
- }
-
- if (flag)
- set_kb_item(name: "Host/AIX/"+patch, value:1);
-
- return flag;
- }
-